/*
 * Plugin.h
 *
 *  Created on: 2011. 3. 15.
 *      Author: JeeHoon
 */
#ifndef IPLUGIN_H
#define IPLUGIN_H

#include <FBase.h>
#include "Common.h"

class PluginManager;

class Plugin :
	public Osp::Base::Object
{
public:
	Plugin();
	~Plugin();

	result Construct(PluginManager * pPluginManager, Osp::Base::String pluginName);

	result enqueueParameter(Osp::Base::String callBackID,Osp::Base::String args);
	result dequeueParameter(Osp::Base::String &callBackID,Osp::Base::String &args);

	virtual result execute(Osp::Base::String action, Osp::Base::String args, Osp::Base::String callbackId) = 0;
	virtual result OnConstruct(PluginManager * pPluginManager, Osp::Base::String pluginName) = 0;

protected:
	PluginManager *										__pPluginManager;
	Osp::Base::Collection::QueueT<Osp::Base::String> 	__callBackQueue;
};

#endif //IPLUGIN_H
